<?php

class SiteController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column1';
	public $defaultAction = 'login';

	/**
	 * @var array menú de todas las opciones
	 */
	public $menuOpciones=null;
	/**
	 * Declares default pages.
	 */	
	public function init()
	{
		
		$this->defaultAction=Yii::app()->user->isGuest?'login':'index';
		if(Yii::app()->user->isGuest){
			return parent::init();
		}
		
		/**
		 * @var nivel 
		 * using two-column layout. See 'protected/views/layouts/column2.php'.
		 */
		
		$opciones=array();
		$opciones['Mi información']=array(
			'titulo'=>'Mi información',
			'opciones'=>array(
				array('label'=>'Actualizar información personal', 'url'=>array('site/funcionalidadPendiente')),
				array('label'=>'Cambiar clave', 'url'=>array('site/funcionalidadPendiente')),
			)
		);
		$opciones['Empresas']=array(
			'titulo'=>'Empresas',
			'opciones'=>array(
				array('label'=>'Crear '.EmpresaHelper::obtenerNombreNivelDependienteSingularUsuarioAutenticadoMinusculas(), 'url'=>array('empresa/create')),
				array('label'=>'Administrar '.EmpresaHelper::obtenerNombreNivelDependientePluralUsuarioAutenticadoMinusculas(), 'url'=>array('empresa/admin')),
			)
		);
		$opciones['Usuarios']=array(
			'titulo'=>'Usuarios',
			'opciones'=>array(
				array('label'=>'Crear usuario', 'url'=>array('usuario/create')),
				array('label'=>'Administrar usuarios', 'url'=>array('usuario/admin')),
			)
		);
		$opciones['Roles']=array(
			'titulo'=>'Roles',
			'opciones'=>array(
				array('label'=>'Crear rol', 'url'=>array('rol/create')),
				array('label'=>'Administrar roles', 'url'=>array('rol/admin')),
				array('label'=>'Asignar roles', 'url'=>array('site/funcionalidadPendiente')),
			)
		);
		$opciones['Copias de seguridad']=array(
			'titulo'=>'Copias de seguridad',
			'opciones'=>array(
				array('label'=>'Respaldar', 'url'=>array('site/funcionalidadPendiente')),
				array('label'=>'Restaurar', 'url'=>array('site/funcionalidadPendiente')),
			)
		);
		$this->filtrarOpciones($opciones);
		
		
		
		
		parent::init();
	}
	
	/**
	 * @return array action filters
	 */
	public function filtrarOpciones($opciones)
	{
		$es_adminstrador_sistema=Yii::app()->user->checkAccess(PerfilHelper::ADMINISTRADOR_SISTEMA);
		$es_primer_administrador=Yii::app()->user->checkAccess(PerfilHelper::PRIMER_ADMINISTRADOR);
		$es_administrador=Yii::app()->user->checkAccess(PerfilHelper::ADMINISTRADOR);
		$es_consulta=Yii::app()->user->checkAccess(PerfilHelper::CONSULTA);

		$this->menuOpciones['Mi información']=$opciones['Mi información'];
		
		if($es_primer_administrador || $es_administrador){
			$this->menuOpciones['Usuarios']=$opciones['Usuarios'];
			$this->menuOpciones['Roles']=$opciones['Roles'];
		}
		if($es_primer_administrador || $es_adminstrador_sistema){
			$nivelSiguiente=EmpresaHelper::obtenerSiguienteNivelUsuarioAutenticado();
			if($nivelSiguiente){
				$opciones['Empresas']['titulo']=$nivelSiguiente->plural;
				$this->menuOpciones['Empresas']=$opciones['Empresas'];
			}
		}
		if($es_adminstrador_sistema){
			$this->menuOpciones['Copias de seguridad']=$opciones['Copias de seguridad'];
		}
		
	}
	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'rights',
				//'accessControl', // perform access control for CRUD operations
				//'postOnly + delete', // we only allow deletion via POST request
		);
	}
	
	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
				array('allow',  // allow all users to perform 'index' and 'view' actions
						'actions'=>array('login','error'),
						'users'=>array('?'),
				),
				array('allow', // allow authenticated user to perform 'create' and 'update' actions
						'actions'=>array('index','logout','error'),
						'users'=>array('@'),
				),
				array('deny',  // deny all users
						'users'=>array('*'),
				),
		);
	}
	/**
	 * Declares class-based actions.
	 */
	public function actions()
	{
		return array(
			// captcha action renders the CAPTCHA image displayed on the contact page
			'captcha'=>array(
				'class'=>'CCaptchaAction',
				'backColor'=>0xFFFFFF,
			),
			// page action renders "static" pages stored under 'protected/views/site/pages'
			// They can be accessed via: index.php?r=site/page&view=FileName
			'page'=>array(
				'class'=>'CViewAction',
			),
		);
	}

	/**
	 * This is the default 'index' action that is invoked
	 * when an action is not explicitly requested by users.
	 */
	public function actionIndex()
	{
		// renders the view file 'protected/views/site/index.php'
		// using the default layout 'protected/views/layouts/main.php'
		$this->layout='//layouts/column2';
		$arrayAuthRoleItems = Yii::app()->authManager->getAuthItems(2,Yii::app()->user->id);
        $arrayKeys = array_keys($arrayAuthRoleItems);
        $perfil="Consulta";
        if($arrayKeys && count($arrayKeys)>0){
        	$perfil = $arrayKeys[0];
        }
        
        
		$this->render('index',array(
				'perfil'=>$perfil,
				'roles' => UsuarioHelper::obtenerRolesEmpresaUsuarioAutenticadoToString(),
		));
	}
	public function actionFuncionalidadPendiente()
	{
		// renders the view file 'protected/views/site/index.php'
		// using the default layout 'protected/views/layouts/main.php'
		$this->render('funcionalidadPendiente');
	}
	/**
	 * This is the action to handle external exceptions.
	 */
	public function actionError()
	{
		if($error=Yii::app()->errorHandler->error)
		{
			if(Yii::app()->request->isAjaxRequest)
				echo $error['message'];
			else
				$this->render('error', $error);
		}
	}

	/**
	 * Displays the contact page
	 */
	public function actionContact()
	{
		$model=new ContactForm;
		if(isset($_POST['ContactForm']))
		{
			$model->attributes=$_POST['ContactForm'];
			if($model->validate())
			{
				$name='=?UTF-8?B?'.base64_encode($model->name).'?=';
				$subject='=?UTF-8?B?'.base64_encode($model->subject).'?=';
				$headers="From: $name <{$model->email}>\r\n".
					"Reply-To: {$model->email}\r\n".
					"MIME-Version: 1.0\r\n".
					"Content-Type: text/plain; charset=UTF-8";

				mail(Yii::app()->params['adminEmail'],$subject,$model->body,$headers);
				Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.');
				$this->refresh();
			}
		}
		$this->render('contact',array('model'=>$model));
	}

	/**
	 * Displays the login page
	 */
	public function actionLogin()
	{
		$model=new LoginForm;

		// if it is ajax validation request
		if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}

		// collect user input data
		if(isset($_POST['LoginForm']))
		{
			$model->attributes=$_POST['LoginForm'];
			// validate user input and redirect to the previous page if valid
			if($model->validate() && $model->login())
				$this->redirect(Yii::app()->user->returnUrl);
		}
		// display the login form
		$this->render('login',array('model'=>$model));
	}

	/**
	 * Logs out the current user and redirect to homepage.
	 */
	public function actionLogout()
	{
		Yii::app()->user->logout();
		$this->redirect(Yii::app()->homeUrl);
	}
}